/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.swing.JOptionPane;
import model.Funcionario;
import util.jpaUtil;

/**
 *
 * @author calandreli
 */
public class FuncionarioDAO extends JPAHibernateDAO {

    @Override
    public Class obterClasse() {
        return Funcionario.class;
    }

    public static Funcionario efetuarLogin(String login, String senha) {
        EntityManager em = jpaUtil.getEntityManager();
        Query query = em.createQuery("select u from Funcionario u where u.login = :login and u.senha = :senha");

        query.setParameter("login", login);
        query.setParameter("senha", senha);

        List<Funcionario> usuarios = query.getResultList();
        try {
            if (usuarios.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Usuário ou senha inválido!");
                return null;
            }
        } catch (Exception sqle) {
        }

        if (usuarios.size() > 1) {

            throw new RuntimeException("Mais de um usuario foi retornado");

        }

        return usuarios.get(0);
    }

    public Funcionario pesquisarNome(String nome) {
        EntityManager em = jpaUtil.getEntityManager();
        Query query = em.createQuery("Select t from Funcionario t  where LOWER(t.nome) like :nome OR UPPER(t.nome)  like :nome");
        query.setParameter("nome", "" + nome.toLowerCase() + "%");
        return (Funcionario) query.getSingleResult();
    }

    public List<Funcionario> pesquisarLogin(String login) {
        EntityManager em = jpaUtil.getEntityManager();
        Query query = em.createQuery("Select f from Funcionario f where LOWER(.login) like :login OR UPPER(f.login)  like :login");
        query.setParameter("login", "" + login.toLowerCase() + "%");

        return query.getResultList();
    }

}
